Julia 异常处理
阐述
函数可以通过抛出一个异常来表示它不能返回一个合理的值。所有异常都是 Exception
类型的子类型,有很多内建的异常类型,也可以定义自己的异常类型。其中,ErrorException
是一类特殊的异常,它代表了程序的严重错误,导致控制流直接终止。
函数可以
- 用
throw(SomeException(...))
抛出异常 - 用
error(message::AbstractString)
直接终止程序 - 用 try-catch-finally 语句来捕获异常。
实例
julia> struct MyCustomException <: Exception end
julia> f(x) = x>=0 ? exp(-x) : throw(DomainError(x, "argument must be nonnegative"))
f (generic function with 1 method)
julia> fussy_sqrt(x) = x >= 0 ? sqrt(x) : error("negative x not allowed")
fussy_sqrt (generic function with 1 method)
julia> try
sqrt("ten")
catch e
println("You should have entered a numeric value")
end
You should have entered a numeric value